package com.py.credit.dao;

import java.math.BigInteger;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.py.credit.entity.GatewayUserEntity;
import com.py.framework.core.common.Page;

/**
 * 信用评价前台网站用户Dao
 *
 * @author Leegern
 * @date 2018年4月25日
 */
public interface GatewayUserDao {

	/**
	 * 添加用户信息
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	void addUserInfo(GatewayUserEntity entity);

	/**
	 * 查询用户ID
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	BigInteger getUserInfo(String bm);
	
	/**
	 * 查询用户ID
	 *
	 * @param entity
	 *            用户实体
	 * @return
	 */
	GatewayUserEntity getUserInfoById(String id);

	/**
	 * 根据用户账号删除标记查询用户信息
	 *
	 * @param params
	 * @return
	 */
	GatewayUserEntity selectUserByTwoPrincipal(Map<String, Object> params);

	/**
	 * 获取信用评价网站首页通知公告数据
	 *
	 * @param userId
	 * @return
	 */
	List<LinkedHashMap> getXypjNotice(@Param(value = "userId") long userId);

	/**
	 * 修改用户信息
	 *
	 * @return
	 */
	void modifyUserInfo(Map<String, Object> params);

	/**
	 * 实名认证修改用户信息
	 *
	 * @return
	 */
	void repeatModifyUserInfo(GatewayUserEntity entity);

	/**
	 * 获取证件照列表
	 *
	 * @param userId
	 * @param page
	 * @return
	 */
	List<LinkedHashMap> getZjPhotoListForPage(@Param(value = "userId") long userId, @Param(value = "page") Page page);

	/**
	 * 证件照详情
	 *
	 * @param id
	 * @return
	 */
	LinkedHashMap getZjPhotoInfo(@Param(value = "id") long id);

	/**
	 * 新增证件照
	 *
	 * @param zjName
	 * @param zjdw
	 * @param type
	 * @param filepath
	 * @param startTime
	 * @param endTime
	 * @param userId
	 */
	void addZjPhotoInfo(@Param(value = "zjName") String zjName, @Param(value = "zjdw") String zjdw,
			@Param(value = "type") String type, @Param(value = "filepath") String filepath,
			@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "userId") long userId, @Param(value = "typeValue") String typeValue,
			@Param(value = "status") String status);

	/**
	 * 修改证件照
	 *
	 * @param zjName
	 * @param zjdw
	 * @param type
	 * @param filepath
	 * @param startTime
	 * @param endTime
	 * @param id
	 */
	void modifyZjPhotoInfo(@Param(value = "zjName") String zjName, @Param(value = "zjdw") String zjdw,
			@Param(value = "type") String type, @Param(value = "filepath") String filepath,
			@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "id") long id, @Param(value = "typeValue") String typeValue);

	/**
	 * 获取报告历史查询列表
	 *
	 * @param sqr
	 * @param page
	 * @return
	 */
	List<LinkedHashMap> selectApplicatonReportListForPage(@Param(value = "sqr") String sqr,
			@Param(value = "reportType") String reportType, @Param(value = "reportStatus") String reportStatus,
			@Param(value = "region") String region, @Param(value = "industry") String industry,
			@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "page") Page page);

	/**
	 * 删除证件照
	 *
	 * @param id
	 */
	void delZjPhotoInfo(@Param(value = "id") long id);

	/**
	 * 判断该账户是否是敏感账户
	 *
	 * @param username
	 * @return
	 */
	int selectUserIsSensitiveAccount(@Param(value = "username") String username);
}